/**
 * a01513
 */
var datapicker_option = {
		showOtherMonths: true,
		selectOtherMonths: true,
		changeMonth: true,
		dateFormat: 'yy-mm-dd',
		changeYear: true
};
var farmList=null;
var multiArr=null;

$(function () {
	
	var grid_selector = "#grid-table";
	var pager_selector = "#grid-pager";
	//在动态加载css文件之前，先把前一个页面动态加载的css文件删除，动态加载的css文件的class='pageSpecCss'
	$("head link").remove(".pageSpecCss");

	// 由于子页面的css文件需要添加到主页面的固定地方，所以只能用js代码动态添加
	//$("#cssLink").after("<link rel='stylesheet' class='pageSpecCss' href='../assets/css/ui.jqgrid.css'></link>");

	// resize to fit page size
	$(window).on('resize.jqGrid', function() {
		$(grid_selector).jqGrid('setGridWidth', $(".page-content").width());
	});
	// resize on sidebar collapse/expand
	var parent_column = $(grid_selector).closest('[class*="col-"]');
	$(document).on(
			'settings.ace.jqGrid',
			function(ev, event_name, collapsed) {
				if (event_name === 'sidebar_collapsed'
						|| event_name === 'main_container_fixed') {
					$(grid_selector).jqGrid('setGridWidth',
							parent_column.width());
				}
			});
	
	var height = $(window).height();
	height = height - 45 - 41 - 64;
	var hstr = height + 'px';
	var turbineNum=0;
	
	$('#page-content').css('height',hstr);
	
	$("#start,#end").datepicker(datapicker_option);	
	
	$("#start,#end").val("2014-12-01");	
	
	$.ajax({
		url:"../diagnose/getWindFarmList.do",
		type:"post",
		dataType:"json",
		success:function(data){
			var farmOptionStr = "";
			farmList = eval(data.resBody);
			for(var i=0; i<farmList.length; i++){
				if(i==0)
					farmOptionStr = "<option value='" + farmList[i].farmid + "' selected>" + farmList[i].farmname + "</option>";
				else
					farmOptionStr = farmOptionStr + "<option value='" + farmList[i].farmid + "'>" + farmList[i].farmname + "</option>";
			}
			$("#farmid").empty();
			$("#farmid").append(farmOptionStr);
			
			$("#farmid").change(function(){
				var tmpid = $(this).val();
				buildTurbineSelection(tmpid);
			});
			
			var farmid = $("#farmid option:selected").val();
			buildTurbineSelection(farmid);
			
			if(farmList!=null){
				var multiFarmStr = '<div class="form-group"><label class="col-sm-2 control-label" for="farmid" style="width:120px;">风场: </label><div class="col-sm-10">';
				var counter=0;
				for(var i=0; i<farmList.length; i++){
					//处理IE下换行挤压问题，通过DIV的col-sm-10来固定换行
					counter++;
					if(counter == 1){
						multiFarmStr = multiFarmStr + '<div class="col-sm-10">';
					}
					multiFarmStr = multiFarmStr + '<label><input name="farmList" value="' + farmList[i].farmid + '" type="checkbox" class="ace"><span class="lbl">'+ farmList[i].farmname +'</span></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
					if(counter == 5){
						multiFarmStr = multiFarmStr + '</div>';
						counter = 0;
					}
				}
				multiFarmStr = multiFarmStr + '<label><input name="checkAll" type="checkbox" class="ace"><span class="lbl">全选/反选</span></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + '</div></div>';
				$("#multiFarm").empty();
				$("#multiFarm").append(multiFarmStr);
				$("input[name=checkAll]").on('click',function(){
					if($(this).is(":checked")){
						//全选
						$("input[name=farmList]").each(function(){
							//对于boolean属性的操作，建议使用prop()方法来操作，其他非boolean属性可以使用attr()方法操作
							$(this).prop('checked', true);
						});
					}else{
						//全不选
						$("input[name=farmList]").each(function(){
							$(this).prop('checked',false);
						});
					}
				});
			}
		}
	});
	
	function buildTurbineSelection(farmid){
		setTurbineNum(farmid);
		$("#ltb,#htb").empty();
		for(var i=1; i<=turbineNum; i++){
			if(i==1)
				$("#ltb,#htb").append("<option value='1' selected='selected'>1</option>");
			else{
				var str = "<option value='"+i+"'>"+i+"</option>";
				$("#ltb,#htb").append(str);
			}
		}
	}
	
	function setTurbineNum(farmid){
		for(var i=0; i<farmList.length; i++){
			if(farmList[i].farmid == farmid){
				turbineNum = farmList[i].turbineNum;
			}
		}
	}
	
	
	$("#search").click(function(){
		$("#modal").modal({
			keyboard:false,
			backdrop:true//'static'
		});
		$("#modal").empty();
		if (!+[1,]){//IE
			$.fn.spin = function(opts) {
				this.each(function() {
				  var $this = $(this),
					  data = $this.data();
				  if (data.spinner) {
					data.spinner.stop();
					delete data.spinner;
				  }
				  data.spinner = new Spinner($.extend({color: 'white'}, opts)).spin(this);
				});
				return this;
			};
			$("#modal").append("<div id='loading' style='margin-top:" + height/2 + "px;' class='center'></div><div class='center white' style='padding-top:50px;'><span>数据正在查询中，请耐心等待...</span></div>");
			var opts = {
					  lines: 12, // The number of lines to draw
					  length: 10, // The length of each line
					  width: 7, // The line thickness
					  radius: 30, // The radius of the inner circle
					  corners: 1, // Corner roundness (0..1)
					  rotate: 0, // The rotation offset
					  direction: 1, // 1: clockwise, -1: counterclockwise
					  color: '#fff', // #rgb or #rrggbb or array of colors
					  speed: 1, // Rounds per second
					  trail: 60, // Afterglow percentage
					  shadow: true, // Whether to render a shadow
					  hwaccel: false, // Whether to use hardware acceleration
					  className: 'spinner', // The CSS class to assign to the spinner
					  zIndex: 2e9, // The z-index (defaults to 2000000000)
			};
			$('#loading').spin(opts);
		}else{//非IE
			$("#modal").append("<div id='loading' style='margin-top:" + height/2 + "px;'></div><div class='center white'><span>数据正在查询中，请耐心等待...</span></div>");
			$('#loading').shCircleLoader({
				dots: 10,
				radius: 50,
				color: 'white',
			    dotsRadius: 10
			});
		}
		$(grid_selector).jqGrid('GridUnload');
		var farmList="";
		$("input[name=farmList]:checked").each(function(){
			if(farmList=="")
				farmList = $(this).val();
			else
				farmList = farmList + "," +$(this).val();
		});
		var start = $("#start").val();
		var end = $("#end").val();
		loadMultiGrid(farmList, start, end);
	});
	
	function loadMultiGrid(farmList,start,end){
		$.ajax({
			type : "post",
			url : "../kpi/getMutiConsum.do",
			dataType : "json",
			data : {farmList:farmList,start:start,end:end},
			success : function(data) {
				if (data.status == "SUCCESS") {
					//处理jqGrid
					$("#modal").modal('hide');
					multiArr = data.resBody;
					$(grid_selector).jqGrid({
						data : multiArr,
						datatype : "local", // 为local时初始化不加载，支持json，xml等
						colNames : [ '风场ID','风场名称', '自耗电量(kWh)','发电量(kWh)','自耗电率'], // 表头
						colModel : [ // 这里会根据index去解析jsonReader中root对象的属性，填充cell
						             {
											name : 'farmid',
											index : 'farmid',
											key : true,
											width : 20,
											align : "center",
											sortable : true,
											sorttype : 'int',
											frozen : true,
											editable : false,
										},{
											name : 'farmname',
											index : 'farmname',
											key : true,
											width : 20,
											align : "center",
											sortable : true,
											sorttype : 'int',
											frozen : true,
											editable : false,
										},{
											name : 'cvalue',
											index : 'cvalue',
											width : 50,
											align : "center",
											editable : false,
											sortable : true,
											sorttype : 'int'
										},{
											name : 'gvalue',
											index : 'gvalue',
											width : 50,
											align : "center",
											editable : false,
											sortable : true,
											sorttype : 'int'
										},{
											name : 'rate',
											index : 'rate',
											width : 50,
											align : "center",
											editable : false,
											sortable : true,
											sorttype : 'int'
										}],
									width : 'auto', // 数字 & 'auto','100%'
									height : 320,
									rowNum : 10, // 每页记录数
									rowList : [10,20,30,50,70,100], // 每页记录数可选列表
									pager : pager_selector, // 分页标签divID
									viewrecords : true, // 显示记录数信息，如果这里设置为false,下面的不会显示
									// recordtext: "第{0}到{1}条, 共{2}条记录",
									//默认显示为{0}-{1} 共{2}条 scroll: false,
									//滚动翻页，设置为true时翻页栏将不显示
									sortable : true,//这里是排序的默认设置，这些值会根据列表header点击排序时覆盖
									sortname : "farmid",
									sortorder : "asc",
									altRows : true,
			//						prmNames : {  
			//						    page:"page",    // 表示请求页码的参数名称  
			//						    rows:"rows",    // 表示请求行数的参数名称  
			//						    sort: "sidx", // 表示用于排序的列名的参数名称  
			//						    order: "sord", // 表示采用的排序方式的参数名称  
			//						    search:"_search", // 表示是否是搜索请求的参数名称  
			//						    nd:"nd", // 表示已经发送请求的次数的参数名称  
			//						    id:"id", // 表示当在编辑数据模块中发送数据时，使用的id的名称  
			//						    oper:"oper",    // operation参数名称（我暂时还没用到）  
			//						    editoper:"edit", // 当在edit模式中提交数据时，操作的名称  
			//						    addoper:"add", // 当在add模式中提交数据时，操作的名称  
			//						    deloper:"del", // 当在delete模式中提交数据时，操作的名称  
			//						    subgridid:"id", // 当点击以载入数据到子表时，传递的数据名称  
			//						    npage: null,   
			//						    totalrows:"totalrows" // 表示需从Server得到总共多少行数据的参数名称，参见jqGrid选项中的rowTotal  
			//						}
									prmNames : {oper:"oper",editoper:"edit", addoper:"add", deloper:"del"},
			
									caption : "自耗电率列表", // 显示查询结果表格标题
									//rownumbers : true, // 设置列表显示序号,需要注意在colModel中不能使用rn作为index
									//rownumWidth : 30, // 设置显示序号的宽度，默认为25
									multiselect : false, // 多选框
									multiboxonly : true,// 在点击表格row时只支持单选，只有当点击checkbox时才多选，需要multiselect=true是有效
									footerrow : true,
									//toolbar : [true,"both"],
									scroll : false,//创建一个动态滚动的表格，当为true时，翻页栏被禁用
									pgbuttons : true,//是否显示翻页按钮
									pginput : true,//是否显示跳转页面的输入框
									pgtext : "第 {0} 页，共 {1} 页",
									emptyrecords : "查无记录",//当返回的数据行数为0时显示的信息,。只有当属性 viewrecords 设置为ture时起作用
									loadtext : "数据查询中...",//当请求或者排序时所显示的文字内容
									loadComplete : function() {
										var table = this;
										setTimeout(function(){
											updatePagerIcons(table);
										}, 0);
										
										var cvalue = 0,gvalue = 0,rate = 0;
										//AVG
										cvalue = $(grid_selector).jqGrid("getCol", "cvalue", false, "avg");
										gvalue = $(grid_selector).jqGrid("getCol", "gvalue", false, "avg");
										rate = $(grid_selector).jqGrid("getCol", "rate", false, "avg");
										$(grid_selector).jqGrid("footerData", "set", {
									        farmid: "汇总", 
									        farmname: "平均", 
									        cvalue: cvalue, 
									        gvalue: gvalue,  
									        rate: rate,
									    });
										//SUM
										cvalue = $(grid_selector).jqGrid("getCol", "cvalue", false, "sum");
										gvalue = $(grid_selector).jqGrid("getCol", "gvalue", false, "sum");
										rate = $(grid_selector).jqGrid("getCol", "rate", false, "sum");
										$(grid_selector).jqGrid("footerData", "set", {
											farmid: "汇总", 
											farmname: "合计", 
											cvalue: cvalue, 
									        gvalue: gvalue,  
									        rate: rate,
									    });
						}
							
					});
					$(window).triggerHandler('resize.jqGrid');// trigger window
					// resize to make
					// the grid get the
					// correct size

					// 这里设定分页bar显示的信息
					$(grid_selector).jqGrid('navGrid', pager_selector, {
						cloneToTop: true,
						edit : false,
						editicon : 'ace-icon fa fa-pencil blue',
						add : false,
						addicon : 'ace-icon fa fa-plus-circle purple',
						del : false,
						delicon : 'ace-icon fa fa-trash-o red',
						search : true,
						searchicon : 'ace-icon fa fa-search orange',
						view : true,
						viewicon : 'ace-icon fa fa-search-plus grey',
						refresh : false
					}, {
						recreateForm: true,
						checkOnSubmit: false, 
						closeAfterEdit: true,
					}, {
						recreateForm: true,
						checkOnSubmit: false, 
						closeAfterAdd: true,
					}, {
//						recreateForm: true,
//						checkOnSubmit: false, 
//						beforeShowForm : beforeDeleteCallback,
//						afterSubmit : afterDeleteRowsCallBack
					},{
						closeAfterSearch: true
					},{},{}
					);
					
				}
			}
		});
	}
	
	//replace icons with FontAwesome icons like above
	function updatePagerIcons(table) {
		var replacement = 
		{
			'ui-icon-seek-first' : 'ace-icon fa fa-angle-double-left bigger-140',
			'ui-icon-seek-prev' : 'ace-icon fa fa-angle-left bigger-140',
			'ui-icon-seek-next' : 'ace-icon fa fa-angle-right bigger-140',
			'ui-icon-seek-end' : 'ace-icon fa fa-angle-double-right bigger-140'
		};
		$('.ui-pg-table:not(.navtable) > tbody > tr > .ui-pg-button > .ui-icon').each(function(){
			var icon = $(this);
			var $class = $.trim(icon.attr('class').replace('ui-icon', ''));
			
			if($class in replacement) icon.attr('class', 'ui-icon '+replacement[$class]);
		});
	}
	
});